iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
Mobile Development

swift 30天之旅系列 第 9

第九天:Swift 繼承和多態性

  • 分享至 

  • xImage
  •  

繼承和多態性是物件導向程式設計中的核心概念,它們為軟件開發提供了更高的靈活性和再利用性。在今天的課程中,我們將深入探討Swift中的這些概念。

類別的繼承

繼承允許一個類別繼承另一個類別的特性。這意味著子類別可以繼承父類別的屬性和方法,並添加或覆蓋它們。

基本的繼承

假設我們有一個基本的Vehicle類別:

class Vehicle {
    var speed: Int = 0

    func makeNoise() {
        print("Some generic noise!")
    }
}

現在,我們可以創建一個新的類別Car,它繼承自Vehicle

class Car: Vehicle {
    var numberOfWheels = 4
}

Car類別現在擁有speed屬性和makeNoise方法,還有它自己獨特的numberOfWheels屬性。

方法的覆蓋

子類別可以覆蓋父類別的方法以提供自己的實現:

class Car: Vehicle {
    override func makeNoise() {
        print("Vroom Vroom!")
    }
}

多態性

多態性允許我們將一個類別的物件當作其父類別或接口的物件來使用。在Swift中,這意味著由於繼承而來的方法可以在子類別中被覆蓋,而當呼叫這些方法時,Swift會在運行時確定應該使用哪個版本。

多態性的示例

考慮以下情況:

class Vehicle {
    func makeNoise() {
        print("Some generic noise!")
    }
}

class Car: Vehicle {
    override func makeNoise() {
        print("Vroom Vroom!")
    }
}

class Bike: Vehicle {
    override func makeNoise() {
        print("Ring Ring!")
    }
}

let vehicles: [Vehicle] = [Car(), Bike(), Vehicle()]

for vehicle in vehicles {
    vehicle.makeNoise()
}

雖然vehicles數組的類型是Vehicle,但運行時仍然會呼叫每個物件的正確makeNoise方法。

函數重載和重寫

函數重載允許同一個類別中有多個名稱相同但參數列表不同的方法。例如:

class Calculator {
    func add(_ a: Int, _ b: Int) -> Int {
        return a + b
    }

    func add(_ a: Double, _ b: Double) -> Double {
        return a + b
    }
}

另一方面,函數重寫是當子類別提供其父類別方法的新實現時。

總結:

今天,我們學習了Swift中的繼承和多態性。通過這些概念,我們可以更好地組織和重用代碼,使其更加靈活和模組化。


上一篇
第八天:Swift 類別和結構
下一篇
第十天:Swift Protocols
系列文
swift 30天之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言